package org.zjt.book

import scala.collection.mutable
import scala.collection.immutable

/**
  * DESC
  *
  *   map -=  k     删除元素
  *   map += （k,v)  新增元素
  *   map (k)       得到/更新元素
  *   getOrElse  得到元素负责得到某值
  *
  *
  *   -          返回一个新的移除元素后的map
  *   +          返回一个新的添加元素后的map
  *
  *   排序       scala.collection.immutable.SortedMap  排序序列
  *
  * @author
  * @create 2017-04-26 上午10:34
  **/
object MapTest {


  def main(args: Array[String]): Unit = {

    /**
      * 不可更改元素的map
      */
    var map = Map(("zhang", 15), ("zhang_2", 16), ("zhang_3", 17))
    println(map.mkString(","))

    map = Map("zhang"->24 ,"zhang_3"->16 ,"li_4"->22)
    map += ("zhang2"->24 ,"zhang_3"->16 ,"li_4"->22)
    println(map.mkString(","))


    /**
      * 可更新元素的map
      */
    var map2 = new mutable.HashMap[String,Int]
    map2("zhang_3")=24
    map2 += ("zhang2"->24 ,"zhang_3"->16 ,"li_4"->22)
    println(map2.mkString(","))

    map2 -= "zhang_3"
    println(map2.mkString(","))



    /**
      * getOrElse得到元素，否则返回默认值
      */
    println("zhang:"+map2.getOrElse("zhang","empty"))


    /**
      * - +   返回一个减少/增加元素的map
      */
    println((map2 - "zhang_3").mkString(","))
    println((map2 + ( "zhang_3" -> 23 )).mkString(","))


    /**
      * 排序：scala.collection.immutable.SortedMap实现排序maps
      */
    var soredMap = immutable.SortedMap("zhangsan"->22,"lisi"->23,"wang"->24)
    println("soredMap: "+soredMap.mkString(","))



    /**
      * map的遍历 key 和k，v
      */
    for ((k, v) <- map)
      print(k+" ："+v+"，")

    println()
    for(i <- map.keySet )
      print(i+" ："+map(i)+"，")

    /**
      *  map Foreach变成了tuple，可以利用tuple遍历
      */
    println()
    map.foreach(a=>println(a._1 +" $ "+ a._2))



    /**  getOrElse 得到则，否则返回设置的值 */
    val var2 = Map( 2-> "zhang" , 3-> "li" , 4 -> "lv")
    val option1 = var2.get(22)
    println(option1.getOrElse("wwww"))
    println(Some(var2.get(2)).getOrElse("21212"))


    print(var2.get(22))
  }


}
